Python numpy 入門系列 22 合併ndarray | 您所在的位置:网站首页 › 陈诚 火车南站到北站 › Python numpy 入門系列 22 合併ndarray |
ndarray的合併 定義要使用的數據源a = np.array([1, 1, 1]) b = np.array([2, 2, 2]) print('a', a) print('b', b) a [1 1 1] b [2 2 2] numpy.vstack()函數語法:vstack(tup),參數是一個元組,它可將元組中指定的數組進行合併 # 將a與b合併 c = np.vstack((a, b)) print('合併結果:\n', c) print('c的形狀:\n', c.shape)合併結果: [[1 1 1] [2 2 2]] c的形狀: (2, 3) 從結果來看,兩個一維數組合並後的結果是一個二維數組 numpy.hstack()函數 語法:hstack(tup),參數是一個元組與 vstack不同的是,vstack將數組進行縱向合併,而hstack將數組進行橫向合併vstack 是 vertical stack 的縮寫hstack 是 horizontal stack 的縮寫 # 將a與b合併 c = np.hstack((a, b)) print('合併結果:\n', c) print('c的形狀:\n', c.shape)合併結果: [1 1 1 2 2 2] c的形狀: (6,) 可以看出,兩個一維數組對象橫向合併後,還是一個一維的序列,不過,元素的個數是被合併數組元素個數之和將a或b行轉成列 a = a.T print(a) [1 1 1] 上面的方式是無法將a進行行轉列的,原因是a是個一維數組,它根本就沒有列,正確的方式是: c = a.reshape((3, 1)) print(c)[[1] [1] [1]] 重新定義形狀後,現在a是一個3行1列的矩陣,即一個二維數據 思考:a.reshape()是將a所指向的數組的形狀改變了嗎?再來查看a print(a) [1 1 1] 實際上,a.reshape()只是創建了一個a的副本,然後將該副本的內存地址賦給了變量c,而a變量所指向的數組還是原來的對象 newaxis屬性還有另外一組方式可以改變a的形狀,也是返回一個 ;axis表示“軸”的意思 # 在行上增加一個維度(增加一個軸) c = a[np.newaxis, :] print(c) print(c.shape) print('-'*15) # 在列上增加一個維度 c = a[:, np.newaxis] print(c) print(c.shape)[[1 1 1]] (1, 3) --------------- [[1] [1] [1]] (3, 1) 可以看出,返回的新對象的維度都已經發生了變化,在列方向上增加維度以後,將原先的一維數組變成了縱向的二維數組 _a = a[:, np.newaxis] _b = b[:, np.newaxis] c = np.hstack((_a, _b)) print(c)[[1 2] [1 2] [1 2]] 也可以將同一個對象進行合併 print(np.hstack((_a, _a, _b, _b)))
[[1 1 2 2] [1 1 2 2] [1 1 2 2]] concatenate()
也可以將數組進行合併,通過axis可以指定合併的方向 # 橫向合併 c = np.concatenate((_a, _a, _b, _b), axis=1) # 縱向合併 d = np.concatenate((_a,_b), axis=0) print(c) print('-'*10) print(d)
[[1 1 2 2] [1 1 2 2] [1 1 2 2]] ---------- [[1] [1] [1] [2] [2] ————————————————REF 鏈接:https://blog.csdn.net/shipeng1022/article/details/107069140
https://www.codenong.com/cs105209851/ http://c.biancheng.net/view/7209.html http://www.zzvips.com/article/174390.html
|
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |